<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    

<script>

// JWT
// JWT -> Json Web Token
// JWT是一种token的具体实现方式
// JWT官网：https://jwt.io/

// JWT是一种三段式加密字符串 -> 'aaaaaaaa.bbbbbbbb.ccccccccc'

// 第一段：header头信息，是一个json对象，使用base64编码
// header = {
//     "alg": "HS256",// HS256哈希算法
//     "typ": "JWT"// token的类型为JWT
// }
// base64(header) => 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9'

// 第二段：payload有效载荷，是一个json对象，使用base64编码
// payload = {
//     "sub": "1234567890",// 主题/标题
//     "name": "John Doe",// 作者/名字
//     "iat": 1516239022,// 创建时间
//     "exp": 30,// 有效期，秒
//     // 通常还会在payload中存储用户信息
//     "user": "xiaocuo",
//     "nick": "小错",
//     // ...
// }
// base64(payload) => 'eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ'

// 第三段：signature签名，使用HS256算法根据上面生成的第一段和第二段再加上加密口令生成
// HS256(base64(header)+'.'+base64(payload),'加密口令') => 'Qlab4rD87A2yQTFmuh_v-8s_jhuDxB2knX56ySxacoI' 哈希值

// 哈希算法也称为散列算法
// 哈希算法可以快速将任意长度的字符映射为固定长度的字符
// 哈希算法生成的值就称为 哈希值
// 常见的哈希算法：
// MD2 MD4 MD5 ...
// SHA0 SHA1 SHA2 ...
// HS256 -> HMAC-SHA256 属于SHA系列的一种算法，256表示生成的值为256位

// jwt类型的token -> 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.Qlab4rD87A2yQTFmuh_v-8s_jhuDxB2knX56ySxacoI'

</script>
</body>
</html>